A equipa de apoio académico precisa de uma lista de inscrições ativas cujo desempenho recente registou uma quebra. Compare cada estudante com o seu próprio desempenho anterior no mesmo curso.
Definir as Regras
- Utilize dois períodos:
anteriorerecente. Cada um tem duas avaliações com o mesmo peso. - Exija pelo menos duas pontuações não nulas em cada período antes de comparar as médias.
- Calcule
decline_points = earlier_avg - recent_avg. - Uma quebra de pelo menos 15 pontos significa Rever. Caso contrário, uma inscrição elegível tem Sem alerta.
- Mantenha Dados insuficientes em separado. Um zero é uma pontuação válida; um registo NULL ou em falta não é um zero.
Prepare a Sua Base de Dados
Abra o ficheiro fornecido lab8_setup.sql da pasta do assistente DSAI2202/lab8/ no pgAdmin e execute o ficheiro completo. Utilize novamente a configuração de ligação à direita sempre que abrir uma nova ligação.
A configuração também fornece performance_comparison, uma consulta guardada denominada view. Irá apoiar exercícios posteriores; não é uma tabela adicional de resultados de avaliação armazenados.
SET search_path TO lab8;SET search_path TO lab8;
SELECT 'students' AS table_name, COUNT(*) AS row_count
FROM students
UNION ALL SELECT 'courses', COUNT(*) FROM courses
UNION ALL SELECT 'enrolments', COUNT(*) FROM enrolments
UNION ALL SELECT 'assessment_results', COUNT(*) FROM assessment_results
UNION ALL SELECT 'support_units', COUNT(*) FROM support_units
ORDER BY table_name;SET search_path TO lab8;
SELECT e.enrolment_id, e.student_id, e.course_code,
r.result_id, r.period, r.assessment_no, r.score
FROM enrolments AS e
JOIN assessment_results AS r
ON r.enrolment_id = e.enrolment_id
WHERE e.enrolment_id IN ('E01', 'E07', 'E08', 'E09', 'E24')
ORDER BY e.enrolment_id, r.period, r.assessment_no;Verifique as Contagens da Configuração
| Tabela | Linhas | Uma linha representa |
|---|---|---|
| students | 18 | O perfil de um estudante |
| courses | 4 | Um curso |
| enrolments | 24 | A inscrição de um estudante num curso |
| assessment_results | 92 | Um resultado de avaliação para uma inscrição e período |
| support_units | 7 | Uma unidade de apoio no exercício opcional de hierarquia |
Existem 22 inscrições ativas e 2 desistências. A investigação final requer uma linha por inscrição ativa, e não uma linha por avaliação ou uma linha por estudante em todos os cursos.
Cinco Casos para Analisar
| Inscrição | Curso | Pontuações anteriores | Pontuações recentes | Evidências suficientes? |
|---|---|---|---|---|
| E01 | SQL101 | 80, 90 | 60, 70 | Sim |
| E07 | SQL101 | 80, NULL | 50, 50 | Não: apenas uma pontuação anterior |
| E08 | SQL101 | 80, 80 | NULL, NULL | Não: sem pontuações recentes avaliadas |
| E09 | SQL101 | Sem linhas | 60, 60 | Não: período anterior em falta |
| E24 | STAT101 | 0, 0 | 0, 0 | Sim |
A consulta de inspeção devolve 18 linhas de avaliação. E09 tem apenas duas linhas; as suas avaliações anteriores estão ausentes. E08 tem duas linhas recentes, mas nenhuma tem uma pontuação registada.
Verifique os dois exemplos elegíveis
E01: média anterior 85, média recente 65, quebra de 20 pontos → Rever. E24: ambas as médias 0, quebra 0 → Sem alerta. Os outros três exemplos requerem a etiqueta Dados insuficientes.